假设我有一个字符串:“hEY”我想把它转换成“嘿”string.gsub!(/([a-z])([A-Z]+)/,'\1'.upcase)这是我的想法,但是当我在gsub方法中使用它时,upcase方法似乎什么都不做。这是为什么?编辑:我想出了这个方法:string.gsub!(/([a-z])([A-Z]+)/){|str|str.downcase!.capitalize!}有没有办法在正则表达式中做到这一点?我不太明白'\1''\2'的意思。那是反向引用吗?这是如何工作的 最佳答案 @sawa有简单的答案,你已经用另一种机制编辑了
假设我有一个字符串str="Thingstodo:eatandsleep."如何检查"do:"是否存在于str中,不区分大小写? 最佳答案 像这样:puts"yes"ifstr=~/do:/i要返回一个bool值(大概是从一个方法中),将匹配结果与nil进行比较:defhas_do(str)(str=~/do:/i)!=nilend或者,如果你不喜欢!=nil那么你可以使用!~而不是=~并否定结果:defhas_do(str)notstr!~/do:/iend但我真的不喜欢双重否定......
我正在努力寻找解决方案。我如何从下面的字符串中删除字符串中的第一个单词。"iamgoingtoschool""heisgoingtoschool""sheisgoingtoschool""theyaregoingtoschool"所以字符串可以是任何字符串并且不知道第一个单词的确切长度。但只想删除第一个单词。结果应该如下所示"amgoingtoschool""isgoingtoschool""isgoingtoschool""aregoingtoschool"有什么帮助吗?谢谢 最佳答案 "iamgoingtoschool".spl
我有一个来自MD5的字符串,如下所示:@encrypted_str=Digest::MD5.hexdigest("1a2b3c").capitalize=>Bf4ab447496f2d3d5a6c77c2cd12f996但是这个.capitalize只使首字母大写B请告诉我如何将此MD5结果中的所有字母大写 最佳答案 尝试大写:@encrypted_str=Digest::MD5.hexdigest("1a2b3c").upcase 关于ruby-如何使字符串中的所有字母大写?,我们在S
如何在ruby中将数字转换为单词?我知道某处有一颗gem。尝试在没有gem的情况下实现它。我只需要数字到英文单词的整数。找到了这个,但它很乱。如果您对如何实现更清晰、更易于阅读的解决方案有任何想法,请分享。http://raveendran.wordpress.com/2009/05/29/ruby-convert-number-to-english-word/这是我一直在做的事情。但是在实现秤时遇到了一些问题。代码还是一团糟。我希望在它正常运行时使其更具可读性。classNumberswordsdefin_words(n)words_hash={0=>"zero",1=>"one
Python的itertools模块提供了很多关于使用生成器处理可迭代/迭代器的好东西。例如,permutations(range(3))-->012021102120201210combinations('ABCD',2)-->ABACADBCBDCD[list(g)fork,gingroupby('AAAABBBCCD')]-->AAAABBBCCDRuby中有哪些等价物?等效的,我的意思是快速和内存高效(Python的itertools模块是用C编写的)。 最佳答案 Array#permutation、Array#combin
假设我有以下数组,我想去掉连续的重复项:arr=[1,1,1,4,4,4,3,3,3,3,5,5,5,1,1,1]我想得到以下信息:=>[1,4,3,5,1]如果有比我的解决方案(或其变体)更简单、更高效的东西,那就太好了:(arr+[nil]).each_cons(2).collect{|i|i[0]!=i[1]?i[0]:nil}.compact或(arr+[nil]).each_cons(2).each_with_object([]){|i,memo|memo编辑:看起来@ArupRakshit下面的解决方案非常简单。我仍在寻找比我的解决方案更高效的方法。编辑:我将在响应出现时对
我在Ruby中有以下多维数组:[[1,2],[3],[4,5,6]]我需要有以下输出:[[1,3,4],[1,3,5],[1,3,6],[2,3,4],[2,3,5],[2,3,6]]我试过创建一个递归函数,但运气不太好。是否有任何Ruby函数可以帮助解决这个问题?还是递归执行此操作的唯一选择?谢谢 最佳答案 是的,Array#product就是这样做的(Cartesianproduct):a=[[1,2],[3],[4,5,6]]head,*rest=a#head=[1,2],rest=[[3],[4,5,6]]head.prod
它是否与项目添加到哈希的顺序相同? 最佳答案 顶部theRuby1.9.2documentationfortheHashclass声明:Hashesenumeratetheirvaluesintheorderthatthecorrespondingkeyswereinserted.粗略的测试表明这确实适用于Hash#keys和Hash#values,尽管这些方法的相应文档似乎没有具体说明。 关于Ruby:Hash.keys和Hash.values方法返回的键/值的顺序是什么?,我们在St
我需要一个正则表达式来用逗号和/或空格分隔字符串,但忽略带连字符的单词——最好的方法是什么?所以,例如——我想要这个……"foobar,zap-foo,baz".split(/[\s]+/)返回["foo","bar","zap-foo","baz"]但是当我这样做时,它包括像这样的逗号......["foo","bar,","zap-foo,","baz"] 最佳答案 "foobar,zap-foo,baz".split(/[\s,]+/) 关于ruby-正则表达式用逗号和空格分割字符